home *** CD-ROM | disk | FTP | other *** search
/ Mission 3 / Mission 3.zip / Mission 3.iso / demovers / facevalu / examples / ex / ex.txt next >
Text File  |  1998-09-08  |  9KB  |  241 lines

  1.  
  2. An dieser Stelle soll einmal demonstriert werden, wie wenig 
  3. Programmierarbeit in diesem Beispielprogramm steckt.
  4.  
  5. Zunächst werden ganz zu Beginn die Listboxen mit Texten gefüllt und 
  6. ein selbstdefinierter Numberscroller eingerichtet:
  7.  
  8.         PROCEDURE user_rsc_var_init
  9.           '
  10.           b&=65
  11.           FOR a&=0 TO 19
  12.             radio_lstbox_arr$(a&)=CHR$(b&)+" Radio "+STR$(a&+1)
  13.             checl_lstbox_arr$(a&)=CHR$(b&)+" Check "+STR$(a&+1)
  14.             menu_lstbox_arr$(a&)=CHR$(b&)+" Menu "+STR$(a&+1)
  15.             LET open_listbox1_arr$(a&)="Menu "+STR$(a&+1)
  16.             LET open_lstbox2_arr$(a&)="Radio "+STR$(a&+1)
  17.             LET open_lstbox3_arr$(a&)="Check "+STR$(a&+1)
  18.             INC b&
  19.           NEXT a&
  20.           '
  21.           @slidemover_set(input&,slider&,slider&,10,0,127,3,TRUE)
  22.           '
  23.         RETURN
  24.  
  25. Dann wird die Datei EX.TXT (das ist die Datei, die Sie gerade lesen) 
  26. eingeladen.
  27.  
  28.         PROCEDURE user_on_open
  29.           '
  30.           ' Lade Datei EX.TXT
  31.           '
  32.           LOCAL num_lines&,file$
  33.           '
  34.           num_lines&=250
  35.           DIM txt$(num_lines&),txt!(num_lines&)
  36.           LET file$="EX.TXT"+CHR$(0)
  37.           LET fh&=GEMDOS(61,L:V:file$,0)
  38.           IF fh&=>0
  39.             LET txt%=MAX(1,@fread_to_array(fh&,-1,txt$()))
  40.           ELSE
  41.             LET txt%=0
  42.           ENDIF
  43.           '
  44.         RETURN
  45.  
  46. In der von faceVALUE vorbereiteten Prozedur "user_rsc_interact" wird 
  47. nun eingetragen, was beim Anwählen der einzelnen Dialogknöpfe und 
  48. Menüpunkte passieren soll.
  49.  
  50.         PROCEDURE user_rsc_interact(index&,tree&,object&,mc&,sub_me&)
  51.           '
  52.           SELECT tree&
  53.             '
  54.           CASE buttons&
  55.             SELECT object&
  56.             CASE close_buttons&
  57.               @win_close(@find_handle_from_tree(tree&))
  58.             ENDSELECT
  59.             '
  60.           CASE checks&
  61.             SELECT object&
  62.             CASE check_close&
  63.               @win_close(@find_handle_from_tree(tree&))
  64.             ENDSELECT
  65.             '
  66.           CASE radios&
  67.             SELECT object&
  68.             CASE radios_close&
  69.               @win_close(@find_handle_from_tree(tree&))
  70.             ENDSELECT
  71.             '
  72.           CASE input&
  73.             SELECT object&
  74.             CASE slider&
  75.               a&=@slidemover(index&,slider&,slider&,0,127,3,TRUE)
  76.             CASE callback&
  77.               @rsc_set_text(tree&,show_callback&,callback_var$)
  78.               @rsc_ob_draw(index&,show_callback&)
  79.             CASE input_close&
  80.               @win_close(@find_handle_from_tree(tree&))
  81.             ENDSELECT
  82.             '
  83.           CASE popups&
  84.             SELECT object&
  85.             CASE popup_close&
  86.               @win_close(@find_handle_from_tree(tree&))
  87.             ENDSELECT
  88.             '
  89.           CASE listbxes&
  90.             SELECT object&
  91.             CASE lstbox_close&
  92.               @win_close(@find_handle_from_tree(tree&))
  93.             ENDSELECT
  94.             '
  95.           CASE mstate&
  96.             SELECT object&
  97.             CASE mstate_close&
  98.               @win_close(@find_handle_from_tree(tree&))
  99.             ENDSELECT
  100.             '
  101.           CASE other&
  102.             SELECT object&
  103.             CASE misc_close&
  104.               @win_close(@find_handle_from_tree(tree&))
  105.             ENDSELECT
  106.             '
  107.           CASE resize_me&
  108.             SELECT object&
  109.             CASE resize_close&
  110.               @win_close(@find_handle_from_tree(tree&))
  111.             ENDSELECT
  112.             '
  113.           CASE foldable&
  114.             SELECT object&
  115.             CASE foldable_close&
  116.               @win_close(@find_handle_from_tree(tree&))
  117.             ENDSELECT
  118.             '
  119.           CASE menu&
  120.             SELECT object&
  121.             CASE about&
  122.               ~@alert_wind(1,fv_copyright&,"")
  123.             CASE demo_quit&
  124.               exit_program!=TRUE
  125.             CASE m_buttons&
  126.               ~@win_open_dialog(prg_modal_var&,buttons&,iconify_icon_1&)
  127.             CASE m_status&
  128.               ~@win_open_dialog(prg_modal_var&,checks&,iconify_icon_1&)
  129.             CASE m_radios&
  130.               ~@win_open_dialog(prg_modal_var&,radios&,iconify_icon_1&)
  131.             CASE m_input&
  132.               ~@win_open_dialog(prg_modal_var&,input&,iconify_icon_1&)
  133.             CASE m_popups&
  134.               ~@win_open_dialog(prg_modal_var&,popups&,iconify_icon_1&)
  135.             CASE m_listboxes&
  136.               ~@win_open_dialog(prg_modal_var&,listbxes&,iconify_icon_1&)
  137.             CASE m_multistate&
  138.               ~@win_open_dialog(prg_modal_var&,mstate&,iconify_icon_1&)
  139.             CASE m_resize&
  140.               ~@win_open_dialog(prg_modal_var&,resize_me&,iconify_icon_1&)
  141.             CASE m_foldable&
  142.               ~@win_open_dialog(prg_modal_var&,foldable&,iconify_icon_1&)
  143.             CASE m_other&
  144.               ~@win_open_dialog(prg_modal_var&,other&,iconify_icon_1&)
  145.             CASE menu_ascii&
  146.               ~@win_open_dialog(4,fvt_asci&,-1)
  147.             CASE menu_alerts&
  148.               IF @alert_wind(1,alert_1&,"")=1
  149.                 ~@alert_wind(1,alert_3&,"")=1
  150.               ENDIF
  151.             CASE menu_progress&
  152.               @progress_open("New: Title!",-1)
  153.               FOR albert&=0 TO 4000
  154.                 EXIT IF @progress_update(INT(albert&/40))
  155.               NEXT albert&
  156.               @progress_close
  157.             CASE menu_busy&
  158.               time&=@busy_open(TRUE)
  159.               FOR a&=0 TO 4000
  160.                 EXIT IF @busy_update(time&)
  161.               NEXT a&
  162.               @busy_close
  163.             CASE demo_simple_win&
  164.               ~@win_open(" Standard window ","  Info line...",simple_window%,backgrnd&,800,800,16,16,12,0,0,800,800,iconify_icon_1&)
  165.             CASE demo_hor_tlstrip&
  166.               ~@win_open(" Toolstrip window ","",toolstrip_window%,toolstrip&,800,800,16,16,12,0,0,800,800,iconify_icon_1&)
  167.             CASE demo_ver_toolbar&
  168.               ~@win_open(" Toolbar window ","",toolbar_window%,toolbar&,800,800,16,16,12,0,0,800,800,iconify_icon_1&)
  169.             CASE demo_menu_window&
  170.               @open_text_window
  171.             CASE iconify_all&
  172.               @win_iconify_all
  173.             CASE uniconify_all&
  174.               @win_uniconify_all
  175.             ENDSELECT
  176.           ENDSELECT
  177.         RETURN
  178.  
  179. So einfach funktioniert die Ausgabe Fenster. Die folgende Routine 
  180. wird zum Zeichnen der Fensterinhalte aufgerufen (diese Userfenster-
  181. Funktion ist nur in der faceVALUE-Vollversion verfügbar):
  182.  
  183.         PROCEDURE user_window_content(index&,userhandle&,off_x%,off_y%,cx&,cy&,cw&,ch&)
  184.           '
  185.           ' Kreise Zeichnen
  186.           '
  187.           LOCAL a&
  188.           SELECT userhandle&
  189.           CASE 12
  190.             FOR a&=95 TO 395 STEP 100
  191.               CIRCLE 400-off_x%,400-off_y%,a&
  192.             NEXT a&
  193.           ENDSELECT
  194.           '
  195.         RETURN
  196.         
  197. Zum Schluß mußten noch die beiden Prozeduren erstellt werden, um dem 
  198. Textfenster einen Fontselektor zu verpassen:
  199.         
  200.         PROCEDURE open_text_window
  201.           LOCAL handle&,index&                           !locals
  202.           LET handle&=@textlist_win_open(" System font at 10 points ","",0,3,window_menu&,42,-1,-1,-1,-1,iconify_icon_1&,txt%,txt$())
  203.           IF handle&>0                                   !if window opened
  204.             index&=@win_get_index(handle&)               !find index
  205.             num_fonts&=@vdi_load_fonts(window_array&(index&,22))   !load fonts
  206.             ' these are the extended window_array&() entries:
  207.             window_array&(index&,26)=1                   !initial font id
  208.             window_array&(index&,27)=10                  !initial font size
  209.             @textlist_resize(index&,txt%,txt$())
  210.           ENDIF
  211.         RETURN
  212.         PROCEDURE change_font(index&)
  213.           LOCAL id&,size&,wcell&,hcell&,ret%,x&,y&,w&,h&,name$,handle&,fontflags&
  214.           IF index&=-1                          !if called by shortcut
  215.             ~WIND_GET(0,10,handle&,d&,d&,d&)    !get the top window (the window whose shortcut was used)
  216.             index&=@win_get_index(handle&)      !find <index&> for this window
  217.           ENDIF
  218.           id&=window_array&(index&,26)          !find font id
  219.           size&=window_array&(index&,27)        !find font size
  220.           '
  221.           '   1=include systemfont
  222.           '   2=include monospaced
  223.           '   4=include proportional
  224.           '   8=include bitmap
  225.           ' 240=include vector
  226.           ' 254=include all
  227.           fontflags&=254 !include all
  228.           '
  229.           ret%=@xfsl(window_array&(index&,22),"Choose font",fontflags&,num_fonts&,name$,id&,size&,wcell&,hcell&)
  230.           IF ret%=1                             !if new font/size selected
  231.             @win_set_title(index&," "+name$+" "+STR$(size&)+" points ") !set title of window
  232.             ' then fill the extended window_array&() entries correctly:
  233.             window_array&(index&,26)=id&        !new font id
  234.             window_array&(index&,27)=size&       !new font size
  235.             ' update the window:
  236.             @textlist_resize(index&,txt%,txt$())
  237.             @win_send_redraw(index&,-1,-1,-1,-1)   !redraw window
  238.           ENDIF
  239.         RETURN
  240.  
  241.